基本上的需要已經大概摸索出來了,考慮到之後的發展性,直接一個沒有結構的 repo 顯然是不行的,我們至少需要規畫:
目前可以擺放 example,之後更可以擺放一些協助指令,例如 toolgui_new_project
之類,讓使用者 go install
就可以使用。
目前雖然只有 index.html 和 index.js ,但之後肯定要做成專門的 js/ts project,所以需要割出一個資料夾,而不是和其他 golang code 擺在一起。
這裡可以參考 Filebrowser: assets 。
我是直接參考 streamlit 的 unittest ,預定用 Cypresshttps://www.cypress.io/ 來做 e2e test,目前也先規劃一個資料夾給 cypress project。
要 import 時的 folder。
底下有目前會有兩個 sub package:
所以會這樣規劃
.
├── cmd
│ └── example
├── go.mod
├── go.sum
├── toolgui-web
│ ├── mod.go
│ ├── index.html
│ └── index.js
├── toolgui-e2e
└── toolgui
├── tgcomp
│ ├── button.go
│ └── text.go
└── tgframe
├── components.go
└── http_runner.go
mod.go
這裡會負責 expose index.html 和 index.js (或是之後 js/ts project 的 compile result) 的 []byte。
package toolguiweb
import (
_ "embed"
)
//go:embed index.html
var IndexBody []byte
//go:embed index.js
var JsBody []byte
components.go
擺放 Container Component,之後若要幫 Component 做 interface 也會放在這裡。
http_runner.go
就是負責處理 HTTP Handler 的邏輯。